import org.w3c.dom.NodeList;

import javax.xml.soap.Node;

public class LeetCode25 {

    public static void main(String[] args) {
        ListNode listNode1 = new ListNode(1,null);
        ListNode listNode2 = new ListNode(2,listNode1);
        ListNode listNode3 = new ListNode(3,listNode2);
        ListNode listNode4 = new ListNode(4,listNode3);
        ListNode listNode5 = new ListNode(5,listNode4);

        print(listNode5);
        ListNode listNode = reverseKGroup(listNode5, 2);

        print(listNode);

    }

    public static ListNode reverseKGroup(ListNode head, int k){
        ListNode p = head;

        for (int i = k-1 ; i > 0;i--){
            p = p.next;
        }
        if (p == null){
            return head;
        }

        ListNode listNode = reverseKGroup(p.next, k );
        ListNode next = head.next.next;
        head.next.next = head;
        head.next = next;


        return listNode;

    }

    public static void print(ListNode p){
        while (p != null){
            System.out.print(p.val);
            p = p.next;
        }
        System.out.println();
    }


     private static class ListNode {
      int val;
      ListNode next;
      ListNode() {}
      ListNode(int val) { this.val = val; }
      ListNode(int val, ListNode next) { this.val = val; this.next = next; }
  }
}
